import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace AdminDepartmentApi {
  /** 教育行政部门信息信息 */
  export interface AdminDepartment {
    id: number; // 教育行政部门id
    orgCode: string; // 教育行政部门编码
    name: string; // 教育行政部门名称
    contact: string; // 联系人
    cellphone: string; // 联系人手机
    phone: string; // 联系人固定电话
    sort: number; // 排序号
    address: string; // 地址
    status?: number; // 有效状态
    remarks: string; // 描述
    areaCode: number; // 部门所在行政区划代码
    mainDeptId: number; // 主管部门id
    mainAreaCode?: number; // 所属主管教育行政区划代码
    licenseNumber: string; // 统一社会信用代码
    metadata?: string; // 其他参数
  }
}

/** 查询教育行政部门信息分页 */
export function getAdminDepartmentPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<AdminDepartmentApi.AdminDepartment>>(
    '/edu/base/admin-department/page',
    data,
    { desensitize, encrypt },
  );
}

/** 查询教育行政部门信息详情 */
export function getAdminDepartment(id: number, desensitize: boolean) {
  return requestClient.get<AdminDepartmentApi.AdminDepartment>(
    `/edu/base/admin-department/get`,
    { params: { id }, desensitize },
  );
}

/** 新增教育行政部门信息 */
export function createAdminDepartment(
  data: AdminDepartmentApi.AdminDepartment,
) {
  return requestClient.post('/edu/base/admin-department/create', data);
}

/** 修改教育行政部门信息 */
export function updateAdminDepartment(
  data: AdminDepartmentApi.AdminDepartment,
) {
  return requestClient.put('/edu/base/admin-department/update', data);
}

/** 删除教育行政部门信息 */
export function deleteAdminDepartment(id: number) {
  return requestClient.delete(`/edu/base/admin-department/delete?id=${id}`);
}

/** 批量删除教育行政部门信息 */
export function deleteAdminDepartmentList(ids: number[]) {
  return requestClient.delete(
    `/edu/base/admin-department/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出教育行政部门信息 */
export function exportAdminDepartment(params: any) {
  return requestClient.download('/edu/base/admin-department/export-excel', {
    params,
  });
}
